import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.List;
import java.util.ArrayList;
/**
 * Write a description of class Hulk here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Hulk extends Enemigo
{
    private int direccionx;
    private int direcciony;
    private String dibujo[];
    private int dibujo_act;
    private boolean dirizq;
    private boolean dirder;
    private int aux;
    private int inc;
    private Actor colicionSpider;
    private Actor colicionBatman;


    
      public  Hulk()
    {
      dibujo=new String[32];
      dibujo[0]="hulkc1.gif";//empieza caminar de iron man
      dibujo[1]="hulkc2.gif";
      dibujo[2]="hulkc3.gif";
      dibujo[3]="hulkc4.gif";
      dibujo[4]="hulkc5.gif";
      dibujo[5]="hulkc6.gif";
      dibujo[6]="hulkc7.gif";
      dibujo[7]="hulkc8.gif";
      dibujo[8]="hulkc9.gif";
      dibujo[9]="hulkc10.gif";
      dibujo[10]="hulkc11.gif";
      dibujo[11]="hulkc12.gif";
      dibujo[12]="hulkc13.gif";
      dibujo[13]="hulkc14.gif";
      dibujo[14]="hulkc15.gif";//termina caminar hulk
      dibujo[15]="hulkb1.gif";//empieza hulk brinco
      dibujo[16]="hulkb2.gif";
      dibujo[17]="hulkb3.gif";
      dibujo[18]="hulkb4.gif";
      dibujo[19]="hulkb5.gif";
      dibujo[20]="hulkb6.gif";
      dibujo[21]="hulkb7.gif";
      dibujo[22]="hulkb8.gif";
      dibujo[23]="hulkb9.gif";//termina hulk brinco
      dibujo[24]="hulk1d.gif";//empieza hulk disparo
      dibujo[25]="hulk2d.gif";
      dibujo[26]="hulk3d.gif";
      dibujo[27]="hulk4d.gif";
      dibujo[28]="hulk5d.gif";
      dibujo[29]="hulk6d.gif";
      dibujo[30]="hulk7d.gif";
      dibujo[31]="hulk8d.gif";// termina disparo hulk
      
      
      this.dirder=true;
      this.dirizq=false;
      this.dibujo_act=0;
      this.aux=0;
       
    }
      
    public void act() 
    {
       GreenfootImage imagen;
        World mundo=getWorld();
       int aleatorio=Greenfoot.getRandomNumber(1000);//crea numero aleatorio
       
       this.setImage(this.dibujo[this.dibujo_act]);
        if(direccionx== 1)//checa la direccion y pone la miagen
        {
            imagen=this.getImage();
            imagen.mirrorHorizontally();
            this.setImage(imagen); 
        }
       
       imagen=this.getImage();
       imagen.scale(200,200);
      
       Gravedad();
      
       
       if(aleatorio>74 && aleatorio< 104 && this.aux ==0)//disparo iron man aleatorio
       {
           this.dibujo_act=24;
           this.aux=0;
           
       }
       else if(aleatorio>84 && aleatorio< 94 && this.aux ==0)//aleatorio de brinco
               { 
                this.aux=1;
                this.dibujo_act=15;
                 
               }
       if (this.aux==0 &&  this.dibujo_act>23 && this.dibujo_act<32)//animacion del disparo
                {
                       this.inc=43;
                }
       
       else if (this.aux==1 &&  this.dibujo_act>14 && this.dibujo_act<=22)//animacion brinco arriba
               {
                   
                   this.setLocation(this.getX(),this.getY()-25);
                   this.dibujo_act++;
                }         
       
      
        if(this.dibujo_act==14 || this.dibujo_act==23 || this.dibujo_act==31)//carga las animaciones al principio
        {
            this.dibujo_act=0;
            this.aux=0;
            this.inc=3;
        }
     
        if(this.getX()>=this.getWorld().getWidth()-10)// checa si toco la derecha
        {
          this.dirizq=false;
          this.dirder=true;
        }
        else if(this.getX()==0)//checa si toco orilla izquierda
        {
          this.dirizq=true;
          this.dirder=false;
        }
         
        if(this.dirizq==true && this.aux==0)
        {
          direccionx=0;
          move(inc);
          this.dibujo_act++;
        }
        else if(this.dirder==true && this.aux==0)
        {
            direccionx=1;
            move(-inc);
            this.dibujo_act++;
        }
          
        colicionSpider = this.getOneObjectAtOffset(0,0,Spiderman.class);
        colicionBatman = this.getOneObjectAtOffset(0,0,Batman.class);
        
          if (colicionSpider != null)// verifica si la bala le pego a spider man
            {
                if(((Mundo)mundo).dameN(0)==5)
                     {
                      regresa_todo();
                     }
                   else{ 
                         ((Mundo)mundo).cambiaN(0); 
                          this.setLocation(this.getX(), this.getY()-70);
                        }
            }
        
        
            else if (colicionBatman != null )// verifica si la bala le pego a batman
            {
                if(((Mundo)mundo).dameN(2)==5)
                     {
                      regresa_todo();
                     }
                   else{ 
                         ((Mundo)mundo).cambiaN(2); 
                         this.setLocation(this.getX(), this.getY()-70);
                        }
            } 
        
    }   
    
     public boolean Gravedad()
    {    
         Actor mosaico;
                           
         List piso =  super.getWorld().getObjectsAt(this.getX(),  this.getY()+70, Plataforma.class);
               if(!piso.isEmpty())
        {
           return (true);
        }
          else
          {
        if (this.getY()<550)
            this.setLocation(this.getX(), this.getY()+3);
            return(false);
          }
    }
}
